<?php
declare (strict_types=1);

namespace app\controller;

use think\facade\Request;

// +--------------------------------------------------------------------------------------------------------------------
// | 目的:
// | 实现机制:
// |
// +--------------------------------------------------------------------------------------------------------------------

/**
 * 路由使用示例
 */
class News
{
    /**
     * 普通调用方法
     *
     * @access public
     * @param Request $request Request对象
     * @return \think\Response
     */
    public function readGeneral($id)
    {
        return 'id=' . $id;
    }

    /**
     * 静态路由调用方法
     *
     * @access public
     * @param Request $request Request对象
     * @return \think\Response
     */
    public function readStatic($id)
    {
        return self::retData($id);
    }

    /**
     * 动态路由调用方法
     *
     * @access public
     * @param Request $request Request对象
     * @return \think\Response
     */
    public function readDynamic()
    {
        $param = request()->param();
        return self::retData($param);
    }

    /**
     * 路由调用默认示例方法
     *
     * @access public
     * @return \think\Response
     */
    public function read($id)
    {
        return self::retData($id,url('new_read', ['id' => $id],false,true));
    }

    /**
     * 路由调用POST示例方法
     *
     * @access public
     * @return \think\Response
     */
    public function update($id)
    {
        return self::retData($id);
    }

    /**
     * 路由调用delete示例方法
     *
     * @access public
     * @return \think\Response
     */
    public function delete($id)
    {
        return self::retData($id);
    }


    /**
     * 示例公共调用方法
     *
     * @access private
     * @param Request $request Request对象
     * @return \think\Response
     */
    private function retData($param,$url='')
    {
        $request = [];
        // 访问类型
        $request['method'] = Request::method(true);
        // 获取当前控制器
        $request['controller'] = Request::controller();
        // 获取当前操作
        $request['action'] = Request::action();;

        $data = [];
        $data['Request'] = $request;

        if (is_array($param)) {
            $data['param'] = $param;
        } else {
            $data['id'] = $param;
        }
        if(!empty($url)){
            $data['url'] = (string)$url;
        }

        return json($data);
    }


}